//
// Created by Jisam on 30/09/2024 3:41 PM.
// Solution of  最大加权矩形
// 2024-09-30 15:50:12 AC 100 二维前缀和 + 差分
#include <bits/stdc++.h>

#define  int long long
#define  endl "\n"
using namespace std;

const int MAXN = 150;
int a[MAXN][MAXN], b[MAXN][MAXN];

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    // 读取整数n，表示矩阵的大小
    int n;
    cin >> n;
    // 遍历矩阵，从1到n
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            // 读取矩阵元素的值
            cin >> a[i][j];
            // 计算并更新二维前缀和数组b，用于快速计算任意子矩阵的元素和
            b[i][j] = b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1] + a[i][j];
        }
    }
    // 初始化最大子矩阵的元素和为0
    int ans = 0;
    // 遍历所有可能的子矩阵，从1到n 四重循环遍历四个角
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = i; k <= n; k++) {
                for (int l = j; l <= n; l++) {
                    // 计算当前子矩阵的元素和，并更新最大值
                    ans = max(ans, b[k][l] - b[i - 1][l] - b[k][j - 1] + b[i - 1][j - 1]);
                }
            }
        }
    }
    // 输出最大子矩阵的元素和
    cout << ans << endl;
    return 0;
}